chore: enable React Compiler in Vitest for all plugins - #1852
Conversation
Mirror tsdown `reactCompiler: true` in vitest.config.ts via the same @rolldown/plugin-babel + reactCompilerPreset stack, update generators, document the invariant for agents, and add a CI parity check so it cannot be forgotten.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
|
✅ E2E Tests🟢 26 passed • view full report • view run Studio: https://plugins-e2e-test-studio-n5stghes2.sanity.dev Datasets: |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Coverage Report
File CoverageNo changed files found. |
There was a problem hiding this comment.
Pull request overview
Enforces React Compiler parity between tsdown.config.ts and vitest.config.ts across the plugins monorepo, so unit tests run against the same compiled output as published builds.
Changes:
- Update plugin generators (Vitest + package templates) to always wire
@rolldown/plugin-babel+reactCompilerPreset, mirroringreactCompiler: trueintsdown.config.ts. - Add a new
scripts/react-compiler-parityVitest project that fails CI/tests if compiler parity drifts. - Backfill existing plugins’
vitest.config.tsandpackage.jsondevDependencies, and document the invariant in agent/skill docs.
Reviewed changes
Copilot reviewed 106 out of 107 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| turbo/generators/templates/vitest.config.ts.hbs | Generator now emits RC-aware Vitest config (Babel + preset) and composes with vanilla-extract when present. |
| turbo/generators/templates/package.json.hbs | Generator now includes @rolldown/plugin-babel + @vitejs/plugin-react as devDependencies (catalog). |
| turbo/generators/templates/README.todo.md.hbs | Generator README guidance calls out keeping tsdown/vitest RC wiring in sync. |
| scripts/react-compiler-parity/package.json | New workspace test package for enforcing RC parity. |
| scripts/react-compiler-parity/vitest.config.ts | Vitest config for parity project (node environment). |
| scripts/react-compiler-parity/react-compiler-parity.test.ts | Parity test that scans plugins and asserts Vitest RC wiring when tsdown enables RC. |
| pnpm-workspace.yaml | Adds @rolldown/plugin-babel and @vitejs/plugin-react to the default catalog. |
| pnpm-lock.yaml | Locks new catalog deps and updates workspace dependency graph (also includes a sanity@next resolution bump). |
| AGENTS.md | Documents the “React Compiler Vitest parity” invariant and references enforcement script. |
| .agents/skills/sanity-plugin-best-practices/references/styling.md | Updates vanilla-extract Vitest examples to preserve RC Babel plugin composition. |
| .agents/skills/plugin-transfer/SKILL.md | Transfer guidance now calls out keeping RC parity in Vitest/tsdown. |
| .agents/skills/plugin-test-coverage/SKILL.md | Testing guidance now includes RC parity requirement and enforcement. |
| .agents/skills/migrate-styled-components-to-vanilla-extract/SKILL.md | Migration checklist updated to keep RC Babel plugin while adding vanilla-extract plugin. |
| plugins/@sanity/assist/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/assist/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/block-insert-picker/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/block-insert-picker/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/code-input/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/code-input/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/color-input/vitest.config.ts | Enables RC Babel stack in Vitest and composes with vanilla-extract plugin. |
| plugins/@sanity/color-input/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/cross-dataset-duplicator/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/cross-dataset-duplicator/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/dashboard/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/dashboard/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/debug-live-sync-tags/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/debug-live-sync-tags/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/document-internationalization/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/document-internationalization/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/embeddings-index-ui/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/embeddings-index-ui/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/form-toolkit/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/form-toolkit/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/google-maps-input/vitest.config.ts | Enables RC Babel stack in Vitest and composes with vanilla-extract plugin. |
| plugins/@sanity/google-maps-input/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/hierarchical-document-list/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/hierarchical-document-list/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/language-filter/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/language-filter/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/orderable-document-list/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/orderable-document-list/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/personalization-plugin/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/personalization-plugin/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/presets/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/presets/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/rich-date-input/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/rich-date-input/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/sanity-plugin-async-list/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/sanity-plugin-async-list/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/sfcc/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/sfcc/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/studio-secrets/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/studio-secrets/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/table/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/table/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/@sanity/vercel-protection-bypass/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/@sanity/vercel-protection-bypass/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-naive-html-serializer/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-naive-html-serializer/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-aprimo/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-aprimo/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-asset-source-unsplash/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-asset-source-unsplash/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-bynder-input/vitest.config.ts | Enables RC Babel stack in Vitest and composes with vanilla-extract plugin. |
| plugins/sanity-plugin-bynder-input/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-cloudinary/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-cloudinary/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-dashboard-widget-document-list/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-dashboard-widget-document-list/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-dashboard-widget-netlify/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-dashboard-widget-netlify/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-dashboard-widget-vercel/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-dashboard-widget-vercel/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-documents-pane/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-documents-pane/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-graph-view/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-graph-view/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-google-translate/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-google-translate/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-hotspot-array/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-hotspot-array/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-iframe-pane/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-iframe-pane/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-internationalized-array/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-internationalized-array/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-latex-input/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-latex-input/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-markdown/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-markdown/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-media/vitest.config.ts | Ensures Vitest runs with RC Babel stack for this plugin. |
| plugins/sanity-plugin-media/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-mux-input/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-mux-input/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-studio-smartling/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-studio-smartling/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-transifex/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-transifex/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-utils/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-utils/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-workflow/vitest.config.ts | Enables RC Babel stack in Vitest and composes with vanilla-extract plugin. |
| plugins/sanity-plugin-workflow/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-workspace-home/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-workspace-home/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-plugin-shopify-assets/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-plugin-shopify-assets/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
| plugins/sanity-translations-tab/vitest.config.ts | Enables RC Babel stack in Vitest for this plugin. |
| plugins/sanity-translations-tab/package.json | Adds @rolldown/plugin-babel + @vitejs/plugin-react devDependencies (catalog). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| function enablesReactCompilerInVitest(vitestSource: string): boolean { | ||
| return ( | ||
| vitestSource.includes('reactCompilerPreset') || vitestSource.includes('@rolldown/plugin-babel') | ||
| ) | ||
| } |
Summary
Makes React Compiler in Vitest a hard invariant with
tsdown.config.ts, so unit tests exercise the same compiled output as published builds (the gap that forced the late Vitest opt-in in #1841 forsanity-plugin-media).Changes
vitest.config.ts.hbsandpackage.json.hbsalways wire@rolldown/plugin-babel+reactCompilerPreset(matchingreactCompiler: truein tsdown).@rolldown/plugin-babeland@vitejs/plugin-reactadded to the default catalog.reactCompiler: truein tsdown now mirror it in Vitest (skipped@sanity/debug-preview-url-secret-plugin, which has no RC).scripts/react-compiler-parityfailspnpm testif the two configs drift.AGENTS.md+ plugin-test-coverage / plugin-transfer / migrate / styling skills document the invariant.No changesets — Vitest/devDependency-only; published runtime is unchanged.
Test plan
pnpm format && pnpm lint && pnpm knip && pnpm build && pnpm test run(1282 tests passed)scripts/react-compiler-paritypassessanity-plugin-mediaVitest configs compose babel + existing plugins